import { isEmpty } from './utils.js'
export default {
  // 检查用户是否已登录
  isLoggedIn() {
    const token = uni.getStorageSync('token');
    const userInfo = uni.getStorageSync('userInfo');
    // return !!(token && userInfo);
    return !isEmpty(userInfo);
  },

  // 获取用户信息（带登录状态检查）
  getUserInfo(forceLogin = false) {
    return new Promise((resolve, reject) => {
      // 检查是否已登录
      if (!forceLogin && this.isLoggedIn()) {
        resolve(uni.getStorageSync('userInfo'));
        return;
      }

      // 未登录，调用登录流程
      this.login().then(userInfo => {
        resolve(userInfo);
      }).catch(err => {
        reject(err);
      });
    });
  },

  // 执行微信登录流程
  login() {
    return new Promise((resolve, reject) => {
      // 显示登录提示
      uni.showModal({
        title: '需要登录',
        content: '请先登录以使用此功能',
        confirmText: '去登录',
        cancelText: '取消',
        success: (res) => {
          if (res.confirm) {
            // 用户点击"去登录" 跳转到登录页
						uni.navigateTo({
							url: '/pages/login/login'
						})
            // this._doWechatLogin().then(userInfo => {
            //   resolve(userInfo);
            // }).catch(err => {
            //   reject(err);
            // });
          } else {
            // 用户取消，返回错误
            reject(new Error('用户取消登录'));
          }
        }
      });
    });
  },

  // 执行微信登录（私有方法）
  _doWechatLogin() {
    return new Promise((resolve, reject) => {
      // 调用微信登录API
      uni.login({
        success: (loginRes) => {
          if (loginRes.code) {
            // 获取到临时登录凭证code，发送到服务器换取token
            this._sendCodeToServer(loginRes.code).then(res => {
              // 登录成功，保存用户信息和token
              uni.setStorageSync('token', res.token);
              uni.setStorageSync('userInfo', res.userInfo);
              resolve(res.userInfo);
            }).catch(err => {
              uni.showToast({
                title: '登录失败，请重试',
                icon: 'none'
              });
              reject(err);
            });
          } else {
            uni.showToast({
              title: '登录失败：获取code失败',
              icon: 'none'
            });
            reject(new Error('获取code失败'));
          }
        },
        fail: (err) => {
          uni.showToast({
            title: '登录失败：微信登录API调用失败',
            icon: 'none'
          });
          reject(err);
        }
      });
    });
  },

  // 将code发送到服务器换取token（需要根据后端接口调整）
  _sendCodeToServer(code) {
    return new Promise((resolve, reject) => {
      uni.request({
        url: 'https://your-api.com/auth/login',
        method: 'POST',
        data: {
          code: code
        },
        success: (res) => {
          if (res.data.code === 0) { // 假设0表示成功
            resolve(res.data.data);
          } else {
            reject(new Error(res.data.message || '服务器错误'));
          }
        },
        fail: (err) => {
          reject(err);
        }
      });
    });
  },

  // 退出登录
  logout() {
    uni.removeStorageSync('token');
    uni.removeStorageSync('userInfo');
    uni.showToast({
      title: '已退出登录',
      icon: 'none'
    });
  }
};